import request from "@/utils/request";

const BILL_BASE_URL = "/admin/bill";

// 防重复提交的状态管理
let isSubmitting = false;

const BillAPI = {
  /**
   * 获取账单分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 账单分页列表
   */
  getPage(queryParams) {
    return request({
      url: `${BILL_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    }).then((response) => {
      // 处理后端返回的Result格式
      if (response && response.data) {
        return response.data;
      }
      return response;
    });
  },

  /**
   * 创建新账单（带防重复提交）
   * @param {Object} data 账单表单数据
   * @returns {Promise} 创建结果
   */
  async create(data) {
    // 检查是否正在提交
    if (isSubmitting) {
      throw new Error('请求正在处理中，请勿重复提交');
    }
    
    // 设置提交状态
    isSubmitting = true;
    
    try {
      const response = await request({
        url: BILL_BASE_URL,
        method: "post",
        data: data,
      });
      
      return response;
    } finally {
      // 延迟重置状态，防止快速重复点击
      setTimeout(() => {
        isSubmitting = false;
      }, 1000);
    }
  },

  /**
   * 更新账单状态
   * @param {string} id 账单ID
   * @param {string} status 状态值
   * @returns {Promise} 更新结果
   */
  updateStatus(id, status) {
    return request({
      url: `${BILL_BASE_URL}/${id}/status`,
      method: "post",
      params: { status },
    });
  },

  /**
   * 根据账单编号查找账单
   * @param {string} billCode 账单编号
   * @returns {Promise} 账单信息
   */
  findByBillCode(billCode) {
    return request({
      url: `${BILL_BASE_URL}/byCode`,
      method: "get",
      params: { billCode },
    });
  },


};

export default BillAPI; 